659d9f325164c0db88cbf2b4f8f6ccfe69f00e10,java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java,MyParentVisitor,visitReturnStatement,#PsiReturnStatement#,333
Before Change
@Override public void visitReturnStatement(PsiReturnStatement statement) {
final PsiLambdaExpression lambdaExpression = PsiTreeUtil.getParentOfType(statement, PsiLambdaExpression.class);
final PsiMethod interfaceMethod = lambdaExpression != null ? LambdaUtil.getFunctionalInterfaceMethod(lambdaExpression.getFunctionalInterfaceType()) : null;
final PsiMethod scopeMethod = interfaceMethod != null ? interfaceMethod : PsiTreeUtil.getParentOfType(statement, PsiMethod.class);
if (scopeMethod != null) {
PsiType type = scopeMethod.getReturnType();
After Change
final PsiType type;
final PsiLambdaExpression lambdaExpression = PsiTreeUtil.getParentOfType(statement, PsiLambdaExpression.class);
if (lambdaExpression != null) {
final PsiType functionalInterfaceType = lambdaExpression.getFunctionalInterfaceType();
method = LambdaUtil.getFunctionalInterfaceMethod(functionalInterfaceType);
type = LambdaUtil.getFunctionalInterfaceReturnType(functionalInterfaceType);
}
else {
method = PsiTreeUtil.getParentOfType(statement, PsiMethod.class);
type = method != null ? method.getReturnType() : null;
}
if (method != null) {
visitMethodReturnType(method, type);
}
}